Profile based optimizers generally work by first instrumenting a binary, then profiling it, and finally using the profile information to apply some transformation to the original binary. The results of the optimization may depend on the scope of the profiling. Software projects may evolve continuously, and some may involve daily releases (such as web browsers). The time and effort required to run full profiles on every single release may be prohibitive, because of the frequent release rate of the binaries.
Some modern software projects have very short development cycles with nearly continuous releases. Pushing new binaries to all users may be prohibitively expensive, especially if the changes in the source code are small. Current research efforts to address this problem include solutions such as developing programs that determine the differences between binaries to be sent to users, but such programs may be file format agnostic and use heuristics. As such, these programs may be less efficient than they could be.